package com.gyj.util;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import lombok.extern.slf4j.Slf4j;

/*
 * DynamicRoutingDataSource是实现动态切换数据源的类
 * DynamicRoutingDataSource是实现动态切换数据源的类，它是AbstractRoutingDataSource抽象类的扩展，
 * 也是我们实现根据租户id切换数据源的关键。
 * 通过扩展AbstractRoutingDataSource抽象类，然后实现determineCurrentLookupKey方法，
 * 返回要切换的数据源的名称，实现切换数据源的目的。
 */
@Slf4j
public class DynamicRoutingDataSource extends AbstractRoutingDataSource {
	private Long tenantId;

	public Long getTenantId() {
		return tenantId;
	}

	public void setTenantId(Long tenantId) {
		this.tenantId = tenantId;
	}

	@Override
	protected Object determineCurrentLookupKey() {
		log.info("访问租户的数据库，tenantId={}", tenantId);
		return tenantId;
	}
}
